1. Field of the Invention
The present invention relates to computer systems, and deals more particularly with methods, systems, and computer program products for keeping electronic calendars up-to-date automatically and dynamically.
2. Description of the Related Art
Calendars, and electronic calendars in particular, often contain a wealth of information about their owner. For example, an individual may use an electronic calendar to maintain information about his work schedule, his meetings and other appointments, his vacation and business travel plans (including when he will be away, which flights or other transportation he will use, where he can be reached while away, who he may visit while away, etc.), phone calls that need to be made at particular times, and so forth. Examples of electronic calendar systems include Microsoft Outlook® 2000 and Lotus Notes®. (“Outlook” is a registered trademark of Microsoft Corporation, and “Lotus Notes” is a registered trademark of Lotus Development Corporation.)
Electronic calendars may be accessed by people and/or by applications. Calendar data can be used to automate tasks and to inform others about things such as whether the calendar owner is currently available, or is out of the office on business, and so forth. For example, the related invention titled “Calendar Events and Calendar-Driven Application Technique” (U.S. Pat. No. 6,988,128) uses calendar data to automate voice mail greetings, among other things. It does this by analyzing calendar data, including a person's scheduled working hours and other scheduled events. The related invention titled “Calendar-Enhanced Awareness for Instant Messaging Systems and Electronic Status Boards” (U.S. Pat. No. 7,035,865) discloses techniques whereby calendar data is used as input to instant messaging (“IM”) systems and electronic status boards. With the increasing use of calendar data such as disclosed in these related inventions, it becomes more important to keep calendar data up to-date and accurate.
Prior art electronic calendars known to the inventors allow the calendar owner to specify a fixed set of working hours, such as 9 a.m. to 5 p.m. Monday through Friday. A user can also specify multiple sets of working hours for a day (such as 7 a.m. to 11 a.m. and 12 noon to 4 p.m. on Thursdays). These specified working hours are then applied to the user's entire calendar, and cannot be set individually for a particular date. That is, there is no way for a calendar user to specify that for next Monday, his working hours are 10 a.m. to 6 p.m., without setting the working hours to 10 a.m. to 6 p.m. for all Mondays. This inability to precisely control working hours is a limitation of existing electronic calendars.
Previously-stored data in existing calendar systems may also become corrupted or inaccurate if a user attempts to change his working hours. This is because electronic calendar data is used for multiple purposes: one is to predict the future (e.g., showing where the user will be on a particular day) and another is to record the past (e.g., to determine how many hours a department's employees spent in meetings for a given time period). For example, a calendar owner “Joe” may have normal working hours of 7 a.m. to 3:30 p.m. Suppose Joe needs to work off-shift for some period of time, for example to cover for a co-worker who is sick or on vacation. With current systems, if Joe temporarily changes his working hours from 7 a.m. to 3:30 p.m. Monday through Friday, setting them instead to 3:30 p.m. to 11 p.m. Sunday through Thursday, this change affects not only the working hours for the future, but also those of the past. Any predictions based on working hours must be reformulated and information derived by analyzing historical calendar data may be incorrect because of the altered working hours. Existing calendar systems provide no way to indicate that one set of working hours is valid for one date or time frame, but not for the remaining dates or time frames, whether in the past or in the future. The invalidity that after-the-fact changes to working hours may introduce for historical calendar data, and for analyses that may be performed on that data, is a serious problem.
Note that in some cases, events scheduled on a user's calendar appear as a type of temporary change to a user's working hours, due to late arrival or early departure. For example, if Joe has a dentist appointment in the morning and will therefore arrive at work an hour late, his calendar will likely have an event such as “personal business” scheduled until his expected arrival time. However, these events are not actually represented on electronic calendars as changes to the calendar owner's working hours, but instead are events scheduled during the working hours.
No existing calendar systems are known that support temporarily lengthening a user's working hours. If Joe's normal schedule is to arrive in the office at 9 a.m., but on a particular day he arrives at 8 a.m., any accesses to his calendar data during that extra hour will provide incorrect information about Joe's availability unless Joe brings up the calendar software and changes his working hours. For example, suppose Joe's manager wishes to speak to him to get a status update before she attends a 9 a.m. meeting. If the manager checks Joe's calendar that morning to see if Joe is available before the meeting begins, she will find that Joe is not scheduled to be at work yet—even though he actually is working—and on the basis of the inaccurate information, will mistakenly assume that Joe is not available. If the automated voice mail system takes an incoming call to Joe's number and uses Joe's calendar data to generate a message for the caller, the caller will be incorrectly informed that Joe will not be at work until 9 a.m. rather than that he stepped away for the moment.
The same problem happens if Joe decides to work late occasionally. Even though he is in the office, his calendar will indicate otherwise. A caller trying to reach Joe will be informed, based on his calendar data, that Joe has already left for the day, when in fact he may have just stepped out of the office for a moment. In some cases, this is merely a nuisance. On the other hand, if someone needs to locate Joe for an important business matter or for a personal emergency, the incorrect information can have significant consequences.
There may also be situations where a person does not know in advance what his hours will be on a given day. Suppose that Joe intends to work until his normally-scheduled end-of-day, which is represented on his calendar, but his wife calls saying she is stuck in traffic and that Joe needs to leave immediately to pick up the children from daycare. Joe doesn't take the time to start up his calendar software and change his working hours: he just logs off of his computer and leaves the office. Since his calendar has not been updated with his early departure information, any co-workers looking at the entries on his calendar will think that he is still at work. Additionally, any calendar-based tools (such as those that derive automated voice mail greetings from the calendar) will also be using incorrect data. This incorrect status information can lead to false expectations that voice mail or other types of messages left for Joe will be received and responded to that day, when in fact Joe is no longer at work.
A similar problem occurs for events that do not have a predetermined start time. For example, many people do not have a specific lunch time; they might take half an hour for lunch, anywhere between 11 a.m. and 1 p.m. Given the randomness of the start time, many users do not schedule their lunch break on their calendar. Therefore, accurate information about the user's status during this period cannot be ascertained by calendar-based applications, and people viewing the user's calendar entries also do not get accurate information.
Another problem with existing calendar systems is that a user's status information may be set in multiple places, where those places are not linked to the calendar. For example, a person may update her status in her instant messaging system, her status for an electronic status board application, her status for an e-mail message server, and so forth. If a user logs on to her IM client or e-mail client, for example, the client software is aware of the user's presence. The user may make explicit changes to her status in one or more places, such as by setting her IM status to “Away” instead of “Active”. If the user has to manually make status updates in multiple places, it is not only tedious but also an inefficient use of time and is error prone. Users will likely miss some of the places that should be revised, either due to accidental oversight or because they choose to spend their time on other things. As a result, the user's status information will be inaccurate in some systems and inconsistent in general.
Improved techniques are needed for keeping calendars, including working hours, up-to-date and for synchronizing calendar status with other status-aware systems.